﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DAL;
using DAL.Repositories;
using EntitiesLayer;
using System.Net.Mail;

namespace BLL
{
    public class GestorUsuario
    {
        UnitOfWork UoW = new UnitOfWork();
        public GestorUsuario() {}

      
        public Boolean comprobarUsuario(String pnunCarnet, String pcontrasena) 
        {
            UsuarioRepository repositorioUsuario = (UsuarioRepository)UoW.UsuarioRepository;
            Boolean valorRetorno = repositorioUsuario.comprobarusuario(pnunCarnet, pcontrasena);
            return valorRetorno;
        }

        public Usuario iniciarSesion(String pnunCarnet) 
        {
            UsuarioRepository repositorioUsuario = (UsuarioRepository)UoW.UsuarioRepository;
            Usuario objUsuario;
            objUsuario = repositorioUsuario.iniciarSesion(pnunCarnet);
            return objUsuario;
        }

        public List<int> obtenerPermisos(int pidRol) 
        {
            UsuarioRepository repositorioUsuario = (UsuarioRepository)UoW.UsuarioRepository;
            return repositorioUsuario.cargarPermisos(pidRol);
        }

        public Boolean comprobarCorreo(String pcorreo) 
        {
             UsuarioRepository repositorioUsuario = (UsuarioRepository)UoW.UsuarioRepository;
             Boolean existeCorreo = repositorioUsuario.comprobarCorreo(pcorreo);                

            return existeCorreo;
        }


        public List<String> obtenerInfousuario(String pcorreo) 
        {
            UsuarioRepository repositorioUsuario = (UsuarioRepository)UoW.UsuarioRepository;
            List<String> listaUsuario = repositorioUsuario.obtenerInfoUsuario(pcorreo);
            return listaUsuario;
        }



        public void EnviarCorreo(String pcorreo, String pnombreUsuario ,String pcarnet, String pcontrasena)
        {
           
             System.Net.Mail.MailMessage mmsg = new System.Net.Mail.MailMessage();
            
            mmsg.To.Add(pcorreo);

            //Asunto
            mmsg.Subject = "GetFit Gym-Recuperación de contraseña";
            mmsg.SubjectEncoding = System.Text.Encoding.UTF8;


            //Direccion de correo electronico que queremos que reciba una copia del mensaje
            //mmsg.Bcc.Add("destinatariocopia@servidordominio.com"); //Opcional


            //Mensaje
            mmsg.Body = "Estimado " + pnombreUsuario + ":\n \n \nLos datos para poder acceder a su cuenta son:\n"
                        +"Número de carnet: " + pcarnet
                        +"\nContraseña: " + pcontrasena
                        + "\n \n \n \n"
                        +"Saludos coordiales del equipo de GetFit"
                        +"\nIridium System"; 
            mmsg.BodyEncoding = System.Text.Encoding.UTF8;
            mmsg.IsBodyHtml = false; //Si no queremos que se envíe como HTML

            //Correo electronico desde la que enviamos el mensaje
            mmsg.From = new System.Net.Mail.MailAddress("mygetfitgym@gmail.com");


            //CLIENTE DE CORREO

            //Creamos un objeto de cliente de correo
            System.Net.Mail.SmtpClient cliente = new System.Net.Mail.SmtpClient();

            //Hay que crear las credenciales del correo emisor
            cliente.Credentials =
                new System.Net.NetworkCredential("mygetfitgym@gmail.com", "getfit12345");

            //Lo siguiente es obligatorio si enviamos el mensaje desde Gmail
           
            cliente.Port = 587;
            cliente.EnableSsl = true;


            cliente.Host = "smtp.gmail.com"; //Para Gmail "smtp.gmail.com";


            /*-------------------------ENVIO DE CORREO----------------------*/

            try
            {
                //Enviamos el mensaje      
                cliente.Send(mmsg);
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                //Aquí gestionamos los errores al intentar enviar el correo
            }
        }
    }
}
